package com.haiwen.upload;

import javax.servlet.ServletException;

import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;

/**
 * 韩要雷
 *
 * 文件上传：
 *   如果表单的类型为 enctype = multipart/form-data  对应的servlet类必须加注解@MultipartConfig
 *   如果没有这个注解，所有的参数都会为null
 *
 */
  //如果文件上传是表单，一定要加这个注解
@WebServlet("/uploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //1.因为前台为表单提交，所以为防止乱码，这个地方指定字符编码为UTF-8
        req.setCharacterEncoding("UTF-8");

        //2.获取表单的普通项
        String uname = req.getParameter("uname");//"uname"代表的是文本框的name属性
        System.out.println("姓名" + uname);

        //3.通过getPart(name)方法获取part对象，---name代表的是页面中file的name的属性值
        Part part = req.getPart("myfile");

        //4.通过part对象获取上传文件的文件名
        String fileName = part.getSubmittedFileName();

        //5.判断文件是否存在
        if (fileName != null && !fileName.equals("")) {
            //6.获取文件上传的真实存放路径
            String realPath = req.getServletContext().getRealPath("/");
            //7.将文件上传到指定位置
            //part.write("f://" + "1.jpg");
            part.write(realPath + fileName);
        }
    }
}
